package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import models.Tag;
import models.Usuario;

public class UsuarioDAO {
	Connection conexao;
	
	public UsuarioDAO(Connection openConexaoBanco) {
		this.conexao = openConexaoBanco;
	}

	public boolean cadastrar(Usuario usuario) {
		boolean retorno = false;
		try {
			String comando = "insert into usuario (email,endereco,login,nome,senha,telefone)"
				+ "values(?,?,?,?,?,?)";
			
			PreparedStatement p = this.conexao.prepareStatement(comando);
			
			p.setString(1, usuario.getEmail());
			p.setString(2, usuario.getEndereco());
			p.setString(3, usuario.getLogin());
			p.setString(4, usuario.getNome());
			p.setString(5, usuario.getSenha());
			p.setString(6, usuario.getTelefone());
			
			p.execute();
			retorno = true;
			
		} catch (SQLException e) {
			System.out
					.println("Ocorreu erro na hora de inserir o Usuario try catch");
			e.printStackTrace();
		}
		return retorno;
	}

	public List<Usuario> listarUsuarios() {
		List<Usuario> listaUsuarios = new ArrayList<Usuario>();
		
		
		try {
			String comando = "select * from usuario";
			java.sql.Statement start = conexao.createStatement();
			ResultSet rs = start.executeQuery(comando);
			
			while(rs.next()){
				Usuario usuario = new Usuario();
				int idUsuario = Integer.parseInt(rs.getString("id"));
				
				usuario.setId(idUsuario);
				usuario.setNome(rs.getString("nome"));
				usuario.setEmail(rs.getString("email"));
				usuario.setEndereco(rs.getString("endereco"));
				usuario.setLogin(rs.getString("login"));
				usuario.setSenha(rs.getString("senha"));
				usuario.setTelefone(rs.getString("telefone"));
				
				listaUsuarios.add(usuario);
			}
			
			
			
		} catch (Exception e) {
			// TODO: handle exception
		}
		
		return listaUsuarios;
	}

	public void excluirUsuario(String _id) {
		try {
			String comando1 = "delete from lista_presentes where usuario_id=?;";
			PreparedStatement p1 = this.conexao.prepareStatement(comando1);
			p1.setString(1, _id);
			
			p1.execute();
		} catch (SQLException e) {
			System.out.println("Ocorreu erro na hora de excluir USUARIO DO CARRINHO try catch");
			e.printStackTrace();
		}
		
		try {
			String comando = "delete from usuario where id=?;";
			PreparedStatement p = this.conexao.prepareStatement(comando);
			p.setString(1, _id);
			
			p.execute();
		} catch (SQLException e) {
			System.out.println("Ocorreu erro na hora de excluir a USUARIO try catch");
			e.printStackTrace();
		}
	}

	public boolean inserirProdutoCarrinho(int usuario_id, int produto_id,
			int quantidade) {
		// TODO Auto-generated method stub
		boolean retorno = false;
		try {
			String comando = "insert into lista_presentes (usuario_id,produto_id,quantidade)"
				+ "values(?,?,?)";
			
			PreparedStatement p = this.conexao.prepareStatement(comando);
			
			p.setString(1, usuario_id+"");
			p.setString(2, produto_id+"");
			p.setString(3, quantidade+"");
			
			p.execute();
			retorno = true;
			
		} catch (SQLException e) {
			System.out
					.println("Ocorreu erro na hora de inserir o PRODUTO NO CARRINHO try catch");
			e.printStackTrace();
		}
		return retorno;
	}
	

}
